package com.lhn.formssi.aop;

import java.io.IOException;

import org.aspectj.lang.annotation.AfterReturning;
import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Pointcut;
import org.springframework.stereotype.Component;

import com.lhn.formssi.entity.User;
import com.lhn.formssi.util.SystemLogUtil;


@Component  //这个注解的作用：把切面类加入到IOC容器中
@Aspect     //这个注解的作用是:将一个类定义为一个切面类
//@Order(1)   //这个注解的作用是:标记切面类的处理优先级,i值越小,优先级别越高.PS:可以注解类,也能注解到方法上
public class SystemLogAop {
	
	//定义一个切点
	//execution表达式 * 表示任意返回类型 包名.类名.方法(..) 两个点表示任意参数
	@Pointcut("execution(* com.lhn.formssi.service.impl.UserServiceImpl.loginCheck(..))")
	private void pointcut() {}
	
	@AfterReturning(returning = "user", pointcut = "pointcut()")
	private void loginLog(User user) throws IOException {
		if(user != null) {
			SystemLogUtil.logWriter(user.getUserName() + "---登录成功---");
		}
	}
}
